package com.zzl.finance.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zzl.finance.order.dto.*;
import com.zzl.finance.order.entity.OrderEntity;
import com.zzl.general.common.exception.SysException;
import com.zzl.general.common.serurity.entity.User;
import com.zzl.general.common.utils.PageUtils;

import java.text.ParseException;
import java.util.Map;

/**
 * @author sunpp
 * @date 2021-11-26 19:40:12
 */
@SuppressWarnings("javadoc")
public interface OrderService extends IService<OrderEntity> {

    /**
     * 平台订单详情
     *
     * @param id 订单id
     * @return
     * @throws SysException 业务异常
     */
    PlatOrderDetail getPlatOrderDetail(Integer id) throws SysException;

    /**
     * 查询 订单详情
     *
     * @param id
     * @return 订单详情
     * @throws SysException 业务异常
     */
    OrderDetailDto getOrderDetail(String id) throws SysException;

    PageUtils queryOrderPage(Map<String, Object> params, User user);

    /**
     * 分页查询
     *
     * @param params 查询参数
     * @return 分页数据
     */
    PageUtils queryPage(Map<String, Object> params);

    /**
     * 新增
     *
     * @param orderAddDto 新增实体
     * @param user        当前登录用户
     * @throws SysException 业务异常
     */
    void saveOrder(OrderAddDto orderAddDto, User user) throws SysException;

    /**
     * 修改订单状态
     *
     * @param updateDto 更新dto
     * @param user      登录用户
     */
    void updateStatus(OrderUpdateDto updateDto, User user);

    /**
     * 修改
     *
     * @param orderUpdateDto 修改实体
     * @param user           当前登录用户
     * @throws SysException 业务异常
     */
    void updateOOrderById(OrderUpdateDto orderUpdateDto, User user) throws SysException;

    /**
     * 发票 审核
     *
     * @param checkSubmit 审核结果
     * @param user        登录用户
     */
    void invoiceCheckSubmit(CheckSubmit checkSubmit, User user) throws SysException;

    /**
     * 修改发票信息
     *
     * @param dto  参数
     * @param user 登录用户
     * @throws SysException 业务异常
     */
    void updatePlatOrder(OrderInvoiceUpdateDto dto, User user) throws SysException;

    void saveEntity(OrderEntity orderEntity);

    Double getTotalConsumption(String enterpriseId);

}

